第18章描述了C++中静态多态(通过模板)和动态多态(通过继承和虚函数)。这两种多态为编写程序提供了强大的抽象能力，但也有各自的缺点:静态多态提供了与非多态代码相同的性能，可以在运行时使用的类型集在编译时需要已知。另一方面，通过继承的动态多态性允许多态函数在编译时处理不确定的类型，但是因为类型必须从公共基类继承，所以灵活性较低。

本章介绍了如何在C++中搭建静态和动态多态性之间的桥梁，在18.3节中讨论了每个模型中优点:更小的可执行代码大小和(几乎)完全编译的动态多态性的特性，以及静态多态性的接口灵活性，允许内置类型无缝衔接的工作。作为示例，我们将构建标准库function<>模板的简化版本。